package br.com.vagacerta.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import br.com.vagacerta.modelo.Estado;

@Repository
public class EstadoDAO {

	private Connection connection;

	@Autowired
	public EstadoDAO(DataSource dataSource) {
		try {
			this.connection = dataSource.getConnection();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}

	public Estado consultaEstadoPorSigla(String siglaEstado) {
		try {

			String sql = "SELECT COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO FROM ESTADO WHERE SIGLA_ESTADO = ?";
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setString(1, siglaEstado);
			ResultSet rs = stmt.executeQuery();
			Estado estado = new Estado();

			while (rs.next()) {
				estado.setCodigoEstado(rs.getLong("COD_ESTADO"));
				estado.setEstado(rs.getString("NOME_ESTADO"));
				estado.setSiglaEstado(rs.getString("SIGLA_ESTADO"));

			}

			rs.close();
			stmt.close();

			return estado;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}

	
	public List<Estado> getListaEstado() {

		try {
			String sql = "select * from estado";

			PreparedStatement stmt = connection.prepareStatement(sql);

			ResultSet rs = stmt.executeQuery();
			List<Estado> listaEstado = new ArrayList<Estado>();

			while (rs.next()) {
				Estado estado = new Estado();
				estado.setCodigoEstado(rs.getLong("COD_ESTADO"));
				estado.setEstado(rs.getString("NOME_ESTADO"));
				estado.setSiglaEstado(rs.getString("SIGLA_ESTADO"));
				listaEstado.add(estado);

			}

			rs.close();
			stmt.close();

			return listaEstado;

		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}

	public Estado consultaEstadoPorId(long idEstado) {
		try {
			
			String sql = "SELECT * FROM ESTADO WHERE COD_ESTADO = ? LIMIT 1";

			PreparedStatement stmt = connection.prepareStatement(sql);
			
			stmt.setLong(1, idEstado);

			ResultSet rs = stmt.executeQuery();
			Estado estado = new Estado();

			while (rs.next()) {
				estado.setCodigoEstado(rs.getLong("COD_ESTADO"));
				estado.setEstado(rs.getString("NOME_ESTADO"));
				estado.setSiglaEstado(rs.getString("SIGLA_ESTADO"));

			}

			rs.close();
			stmt.close();

			
			return estado;
			
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

		
	}
	
}


